﻿using System.Collections.Generic;
using NHibernate;
using Neturion.Dados;
using Neturion.IRepositorios;

namespace Neturion.Repositorios
{
    public class RepositorioTelaAcaoUsuario : IRepositorioTelaAcaoUsuario
    {
        public TelaAcaoUsuario Inserir(TelaAcaoUsuario telaAcaoUsuario)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Save(telaAcaoUsuario);
            return telaAcaoUsuario;
        }

        public TelaAcaoUsuario Atualizar(TelaAcaoUsuario telaAcaoUsuario)
        {
            TelaAcaoUsuario tmpTelaAcaoUsuario = ObterPorId(telaAcaoUsuario.TelaAcaoUsuarioId);
            // Atribuicao dos valores do objeto da memoria para o objeto obtido no banco de dados
            tmpTelaAcaoUsuario.Atualizar = telaAcaoUsuario.Atualizar;
            tmpTelaAcaoUsuario.Excluir = telaAcaoUsuario.Excluir;
            tmpTelaAcaoUsuario.Exportar = telaAcaoUsuario.Exportar;
            tmpTelaAcaoUsuario.Imprimir = telaAcaoUsuario.Imprimir;
            tmpTelaAcaoUsuario.Inserir = telaAcaoUsuario.Inserir;
            tmpTelaAcaoUsuario.SistemaPerfilUsuario = telaAcaoUsuario.SistemaPerfilUsuario;
            tmpTelaAcaoUsuario.Tela = telaAcaoUsuario.Tela;
            tmpTelaAcaoUsuario.Visualizar = telaAcaoUsuario.Visualizar;

            GerenciadorBDConfigs.Instance.SessaoAtual().Merge(tmpTelaAcaoUsuario);
            return tmpTelaAcaoUsuario;
        }

        public void Excluir(TelaAcaoUsuario telaAcaoUsuario)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Delete(telaAcaoUsuario);
        }

        public IList<TelaAcaoUsuario> ObterTodos()
        {
            ICriteria criteria = GerenciadorBDConfigs.Instance.SessaoAtual().CreateCriteria(typeof(TelaAcaoUsuario));
            return criteria.List<TelaAcaoUsuario>() as List<TelaAcaoUsuario>;
        }

        public TelaAcaoUsuario ObterPorId(int id)
        {
            return GerenciadorBDConfigs.Instance.SessaoAtual().Get<TelaAcaoUsuario>(id);
        }
    }
}